home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d18
/
tan_snd.arc
/
NOIZ.SIM
< prev
next >
Wrap
Text File
|
1991-07-27
|
4KB
|
104 lines
unit noiz; { NOIZ.PAS Copyright (c) 1990 DSoft Specialties }
interface { Sound routines for the Tandy 1000 and/or PCJr }
{ All I ask is if you use any of these routines in your program
please mention DSoft in the docs or in a copyright message }
const
inturbo: boolean = true; { true=shorter delay in wait(dtime) }
type
voices = 0..3; { voices for the TI chip }
attenuations = 0..15; { volume level }
styles = 1..4; { for the PLAY routine }
const { Musical Notes A1 - GS10, use these instead of frequencies }
A1 = 27; A2 = 55; A3 = 110; A4 = 220; A5 = 440; A6 = 880; A7 = 1760;
B1 = 31; B2 = 62; B3 = 123; B4 = 247; B5 = 494; B6 = 988; B7 = 1976;
C1 = 33; C2 = 65; C3 = 131; C4 = 262; C5 = 523; C6 = 1047; C7 = 2093;
D1 = 37; D2 = 74; D3 = 147; D4 = 294; D5 = 588; D6 = 1175; D7 = 2349;
E1 = 41; E2 = 83; E3 = 165; E4 = 330; E5 = 660; E6 = 1320; E7 = 2640;
F1 = 44; F2 = 88; F3 = 175; F4 = 350; F5 = 700; F6 = 1400; F7 = 2800;
G1 = 49; G2 = 98; G3 = 196; G4 = 392; G5 = 784; G6 = 1568; G7 = 3136;
A8 = 3520; A9 = 7040; A10 = 14080;
B8 = 3952; B9 = 7904; B10 = 15808;
C8 = 4160; C9 = 8320; C10 = 16640;
D8 = 4704; D9 = 9408; D10 = 18816;
E8 = 5280; E9 = 10560;
F8 = 5600; F9 = 11200;
G8 = 6272; G9 = 12544;
AS1 = 29; AS2 = 58; AS3 = 116; AS4 = 231; AS5 = 466; AS6 = 928; AS7 = 1856;
CS1 = 34; CS2 = 69; CS3 = 139; CS4 = 277; CS5 = 554; CS6 = 1108;CS7 = 2240;
DS1 = 39; DS2 = 78; DS3 = 156; DS4 = 311; DS5 = 622; DS6 = 1244;DS7 = 2496;
FS1 = 46; FS2 = 93; FS3 = 185; FS4 = 370; FS5 = 740; FS6 = 1480;FS7 = 2960;
GS1 = 26; GS2 = 52; GS3 = 208; GS4 = 415; GS5 = 830; GS6 = 1660;GS7 = 3320;
AS8 = 3712; AS9 = 7424; AS10 = 14848;
CS8 = 4480; CS9 = 8960; CS10 = 17920;
DS8 = 4992; DS9 = 9984; DS10 = 19968;
FS8 = 5920; FS9 = 11840;
GS8 = 6640; GS9 = 13280;
const { these are for the NOTE1 and NOTE4 routines }
stacatto: boolean = false; legato: boolean = false;
zetto: boolean = false; xetto: boolean = false;
dtime: integer = 80;
procedure wait(time: longint); { like CRT units delay routine }
procedure sound(freq: word); { like CRT units sound routine }
procedure nosound; { like CRT units NoSound routine }
procedure sound_off; { shut all voices off }
procedure extsound(freq,dur: integer;level: attenuations;voice: voices);
{ freq = the note to play
dur = the duration
level = the volume level
voice = the voice (1 - 3) }
procedure plays(freq,dur: word;attack,decay: integer;voice: voices);
{ freq = the note to play
dur = the duration
attack = the time it takes note to reach max volume
decay = how long it takes note to fade out from max volume
voice = the voice (1 - 3) }
procedure chord(freq1,freq2,freq3,dur,level: integer);
{ - does a 3 note chord -
freq1 = a note
freq2 = another note
freq3 = one more note
dur = duration
level = volume level }
procedure play(freq,dur: integer;v: voices;style: styles);
procedure noise(ch: char;sr,atten,dur: word);
procedure note1(freq,dura: word);
procedure note4(note,dura: integer);
procedure dubend(freq1,freq2,dt: integer);
procedure bend(tone,tone1,tonedur,dur,reps: integer);
procedure scale(freq1,freq2,freq3: integer;a,b,c,d,e,f,g,aa: integer);
procedure scale2(a,b,c,d,e,f,g,z: integer;dtime,attack,decay: integer;
v: voices);
procedure quiet;
{ turns all 3 voices and normal PC sound off. Also, turns noise off }
function fkey: char;
{ like CRT's ReadKey, but if its a function key add 128 to the value of fkey
NOTE: #187 = F1
#196 = F10
Syntax:
ch:=upcase(fkey);
case ch of
'1':;
#187: writeln('F1 hit');
#196: halt;
end; }
function keyhit: boolean;
{ like CRT's KeyPressed }
implementation